With the ever increasing prevalence and proliferation of electronic content has come a commensurate need for the management of such content. Content management system do just that, allowing for the management of such content by controlling the access, editing, updating, versioning, etc. of content. This type of content management is in no way trivial. In certain contexts, such as in an enterprise setting, there may be millions or even billions documents that need to be managed, and users may desire to have access to these documents from a variety of distributed access points.
To facilitate content management in conjunction with such distributed access, content management systems may be organized around one or more content management servers that provide services associated with the management of such content. Content management servers like these may be deployed in the cloud or otherwise distributed.
Using such content management systems then, users may access managed content to, for example, edit such content. To access such content users typically use a user interface (UI) to interface with a content management server of the content management system. They reserve (or “check out”) the content and download it locally on their computer (e.g., referred to as a client). The user can then edit the document, save the changed version to the content management server and unreserve the content.
While these tasks may seem simple on their face, the underlying complexity and operations that must be performed by the content management server to ensure such functionality is smoothly accomplished is vast. For example, many users may be trying to simultaneously access or edit documents from different access points. Thus, in a content management system, there is often a need to control access to content, retain old versions of content, reconcile different versions of content, etc.
As the users interactions with a content server are typically accomplished over a network and the operations undertaken may be complex in nature, the performance of such content management systems (especially from a user perspective) is somewhat lacking. In no small part, these performance issues resulted from the architecture of such systems. As all accesses to content must be made through the content management server substantially every time, and access to the content management system is itself dependent on network speed, the performance of such content management systems is heavily dependent on the speed and connectivity of the network connection and the number of users being the services provided by the content management system.
What is desired therefore, are seamless systems and methods for the management of content that provides the advantages of editing locally stored content to the user while simultaneously providing the advantages that are inherent with the use of a content management system.